import request from './request'

/**
 * 发布分享
 * @param {Object} data - 分享数据
 * @param {number} data.shareId - 分享ID
 * @param {string} data.createBy - 用户名称
 * @param {number} data.userId - 用户ID
 * @param {string} data.content - 分享内容
 * @param {array} data.tags - 标签集合
 * @param {string} data.avatar - 用户头像
 * @returns {Promise} 返回发布结果
 */
export function addShare(data) {
  // 确保包含头像字段
  const shareData = { ...data }
  if (!shareData.avatar && window.userStore) {
    shareData.avatar = window.userStore.avatar || ''
  }
  
  return request({
    url: '/share/add',
    method: 'post',
    data: shareData
  })
}

/**
 * 删除分享
 * @param {number} shareId - 分享ID
 * @returns {Promise} 返回删除结果
 */
export function deleteShare(shareId) {
  return request({
    url: `/share/delete/${shareId}`,
    method: 'delete'
  })
}

/**
 * 分页查询所有分享
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.keyword - 搜索关键词
 * @returns {Promise} 返回分享列表
 */
export function getShareList(params) {
  return request({
    url: '/share/page',
    method: 'get',
    params
  })
}

/**
 * 分页查询当前用户分享
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.keyword - 搜索关键词
 * @returns {Promise} 返回用户分享列表
 */
export function getUserShareList(params) {
  return request({
    url: '/share/page/byuser',
    method: 'get',
    params
  })
}

/**
 * 根据标签id查询分享列表
 * @param {number} noticeId - 标签ID
 * @returns {Promise} 返回分享列表
 */
export function getShareByTag(noticeId) {
  return request({
    url: `/share/notice/${noticeId}`,
    method: 'get'
  })
}

/**
 * 根据分享id查询分享详情
 * @param {number} shareId - 分享ID
 * @returns {Promise} 返回分享详情
 */
export function getShareDetail(shareId) {
  return request({
    url: `/share/share/${shareId}`,
    method: 'get'
  })
}

/**
 * 获取所有标签种类
 * @returns {Promise} 返回标签列表
 */
export function getAllTags() {
  return request({
    url: '/tags/getAllTag',
    method: 'get'
  })
}

/**
 * 发布评论
 * @param {Object} data - 评论数据
 * @param {number} data.shareId - 分享ID
 * @param {string} data.content - 评论内容
 * @param {number} data.parentId - 父评论ID
 * @returns {Promise} 返回评论结果
 */
export function addComment(data) {
  // 获取用户store，确保带上头像
  const userStore = window.userStore
  const commentData = { ...data }
  
  // 添加用户头像和用户名信息
  if (userStore) {
    if (!commentData.commentAvatar) {
      commentData.commentAvatar = userStore.avatar || userStore.defaultAvatar
    }
    if (!commentData.commentUser) {
      commentData.commentUser = userStore.nickname || userStore.userInfo?.username || '匿名用户'
    }
  }
  
  return request({
    url: '/shareComment/addComment',
    method: 'post',
    data: commentData
  })
}

/**
 * 删除评论
 * @param {number} commentId - 评论ID
 * @returns {Promise} 返回删除结果
 */
export function deleteComment(commentId) {
  return request({
    url: `/shareComment/${commentId}`,
    method: 'delete'
  })
}

/**
 * 分页查询顶级评论
 * @param {Object} params - 查询参数
 * @param {number} params.pageNum - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {number} params.shareId - 分享ID
 * @returns {Promise} 返回评论列表
 */
export function getTopComments(params) {
  return request({
    url: '/shareComment/pageComment',
    method: 'get',
    params
  })
}

/**
 * 展示回复评论列表
 * @param {Object} params - 查询参数
 * @param {number} params.parentId - 父评论ID
 * @param {number} params.topId - 顶级评论ID
 * @returns {Promise} 返回回复评论列表
 */
export function getReplyComments(params) {
  return request({
    url: '/shareComment/listReplyComment',
    method: 'get',
    params
  })
} 